/*
  学习目标：使用 subscribe 监听仓库数据的变化
  
// 1. 通过订阅，也就是 store.subscribe( 回调 ) 可以监听到数据的变化
// 会返回一个函数，可以解除监听

// 2. 调用解除监听函数，就不会再监听仓库数据的变化

注意： 代码从上到下执行，什么时候订阅，那就什么时候开始监听
      停止订阅，就不会再监听了
*/
import React from 'react';
import { legacy_createStore as createStore } from 'redux';
const store = createStore(function (state = { count: 0 }, action) {
  if (action.type === 'add') {
    return {
      ...state,
      count: state.count + 1,
    };
  }
  if (action.type === 'des') {
    return {
      ...state,
      count: state.count - 1,
    };
  }

  return state;
});
console.log('store -----> ', store);

store.dispatch({ type: 'add' });

// 1. 通过订阅，也就是 store.subscribe( 回调 ) 可以监听到数据的变化
// 会返回一个函数，可以解除监听
const unFn = store.subscribe(() => {
  console.log('数据变化了 -----> ', store.getState());
});
store.dispatch({ type: 'add' });
store.dispatch({ type: 'add' });
store.dispatch({ type: 'add' });
store.dispatch({ type: 'des' });

// 2. 调用解除监听函数，就不会再监听仓库数据的变化
unFn();

store.dispatch({ type: 'des' });

store.getState();
// console.log('store.getState() -----> ', store.getState());

export default function App() {
  return <div></div>;
}
